import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestByteBuffer {
    private static Logger logger = LoggerFactory.getLogger(TestByteBuffer.class);

    public static void main(String[] args) {
        //新的api 读取文件， FileChannel
        try {
            FileChannel fileChannel  =  new FileInputStream ("d:/bytebuffer.txt").getChannel();
            ByteBuffer buffer = ByteBuffer.allocate(10);//划分容量大小，划分10个字节
            //从channel读取数据，

            while (true){ //B处，缓存区是有限的，所以需要循环
                int len =  fileChannel.read(buffer); //写数据到buffer去

                logger.info("读取的到字节数："+len);
                if(len == -1){
                    logger.info("未读取到结束程序："+len);
                    break;
                }
                //切换读模式
                buffer.flip();
                while(buffer.hasRemaining()){ //A处问缓冲 区是否有数据
                    byte t  =  buffer.get();//读取一个字节
                    System.out.println((char)t);//强转成字符打印
                }
                buffer.clear(); //相当于将所有的标识都复位成默认值，当然，这里只是将所有的标识复位了，而缓冲区Buffer中的数据是没有变动的，切换为写模式
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
